/**
 * Copyright (c) 2009-2012 XTEAM
 * All rights reserved.
 */
/**
 * File：SysCfgService.java
 * History:
 *         2012-6-12: Initially created, Chrise.
 */
package com.xteam.ecsystem.service.admin;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.xteam.ecsystem.base.NormalState;
import com.xteam.ecsystem.dao.IReqCfgDao;
import com.xteam.ecsystem.dao.ISysCfgDao;
import com.xteam.ecsystem.entities.SysSystemConfig;
import com.xteam.ecsystem.utils.PageCenterStation;

/**
 * 系统配置服务层。
 * @author Chrise
 */
@Service
public class SysCfgService {
	
	@Autowired
	private ISysCfgDao scDao;
	
	/**
	 * 获取系统配置。
	 * @author Chrise 2012-6-12
	 * @param sscState
	 * @param pageIndex
	 * @param pageSize
	 * @return
	 */
	public PageCenterStation<SysSystemConfig> getSystemConfigs(int sscState, int pageIndex, int pageSize) {
		if (sscState == NormalState.ALL.value()) sscState = IReqCfgDao.INVALID_STATE;
		
		return this.scDao.getConfigsByNameAndState(sscState, pageIndex * pageSize, pageSize);
	}
	
	/**
	 * 切换状态。
	 * @author Chrise 2012-6-12
	 * @param sscId
	 * @param sscTo
	 */
	public void switchState(String sscId, boolean sscTo) {
		if (sscTo) {
			this.scDao.updateState(sscId, NormalState.EFFECTIVE.value());
		} else {
			this.scDao.updateState(sscId, NormalState.INVALID.value());
		}
	}
	
	/**
	 * 删除系统配置。
	 * @author Chrise 2012-6-12
	 * @param ids
	 */
	public void delSystemConfigs(List<String> ids) {
		this.scDao.deleteConfigs(ids);
	}
	
	/**
	 * 保存系统配置。
	 * @author Chrise 2012-6-12
	 * @param ssc
	 * @return
	 */
	public boolean saveSystemConfig(SysSystemConfig ssc) {
		if (ssc.getSscState() == null) {
			ssc.setSscState(NormalState.EFFECTIVE.value());
		}
		
		if (ssc.getSscId() == null || "".equals(ssc.getSscId())) {
//			if (this.scDao.isExist(ssc.getSscName())) return false;
			
			this.scDao.insertConfig(ssc);
		} else {
//			if (this.scDao.isExist(ssc.getSscId(), ssc.getSscName())) return false;
			
			this.scDao.updateConfig(ssc);
		}
		
		return true;
	}
	
	/**
	 * 获取系统配置。
	 * @author Chrise 2012-6-12
	 * @param id
	 * @return
	 */
	public SysSystemConfig getSystemConfig(String id) {
		return this.scDao.getConfig(id);
	}
}
